package com.huatai.datacenter.service;

import com.huatai.datacenter.entity.messagequeuemonitor.LagRecord;
import com.huatai.datacenter.entity.messagequeuemonitor.LagRecordQueryDTO;
import com.huatai.datacenter.entity.messagequeuemonitor.LagStatVO;
import com.huatai.datacenter.entity.messagequeuemonitor.PageResult;

import java.util.List;
import java.util.Set;
import java.util.concurrent.ExecutionException;

/**
 * 最新版消息队列监控服务（Kafka） 测试 不正式用
 *
 * @author lizhong
 */
public interface KafkaMonitorService {

	/**
	 * 获取所有主题
	 *
	 * @return 所有主题列表
	 */
	Set<String> getAllTopic(String clusterID);

	/**
	 * 获取(主题, 消费组, broker)的lag消息 Kafka
	 *
	 * @param lagRecordQueryDTO (topic, group, brokerAddr)的封装类
	 * @return lag消息
	 * @data 2023-7-21-17:08
	 * @author lizhong
	 */
	PageResult getLagRecordListKafka(LagRecordQueryDTO lagRecordQueryDTO);

	/**
	 * Kafka 进入页面首先展示所有主题所有消费组所有broker的消费情况(主题，broker，消费组地址，消费组名称，lag)
	 * 获取所有主题消费情况的列表，首页展示
	 *
	 * @param clusterID 集群id
	 * @return (主题, 消费组, broker地址, broker名称, lag)
	 * @data 2023-7-21-16:45
	 * @author lizhong
	 */
	PageResult listAllConsumeStatKafka(String clusterID);

	/**
	 * 设置主题页数据的缓存
	 *
	 * @param lagStatVOListCache 主题数据的缓存
	 * @param clusterID          集群ID
	 */
	void setLagStatVOListCache(String clusterID, List<LagStatVO> lagStatVOListCache);

	/**
	 * 获取主题页数据的缓存
	 *
	 * @param clusterID 集群ID
	 * @return 主题页数据的缓存
	 */
	List<LagStatVO> getLagStatVOListCache(String clusterID);


	/*
	============= 新方法 ==========
	*/
	// 1 先获取一个消费组的消费情况 遍历所有消费组 consumer	Topic	partition	offset lag
	// 2 遍历所有主题 每一个主题的情况 topic	partition	leader broker	副本broker
	// 3 联合 topic	partition	consumer	leader broker	副本broker	offset lag

	PageResult getAllTopicPartitionState(String clusterID);

}
